package cn.mini.mybatis.mybatis.executor;


import cn.mini.mybatis.mybatis.executor.resultset.ResultSetHandler;
import cn.mini.mybatis.mybatis.mapping.BoundSql;
import cn.mini.mybatis.mybatis.mapping.MappedStatement;

import java.sql.SQLException;
import java.util.List;


/**
 * Executor 接口定义了 MyBatis 执行器的核心操作，负责执行 SQL 语句并与数据库进行交互。
 * 该接口提供了更新、查询等操作方法，不同的实现类可以实现不同的执行策略，如简单执行、批量执行等。
 */
public interface Executor {


    int update(MappedStatement ms, Object parameter) throws SQLException;

    <E> List<E> query(MappedStatement ms, Object parameter, ResultSetHandler resultHandler, BoundSql boundSql) ;

    void commit(boolean required) throws SQLException;

    void rollback(boolean required) throws SQLException;

    void close(boolean forceRollback);

}
